from flask import Flask, request, redirect, url_for, jsonify, render_template
from werkzeug import Response

app = Flask(__name__)


# Jinjia2模板+传参
@app.route('/index/')
def index():
    return render_template('index.html', name='巨浪网络软件工作', qq='1135172')

# Jinjia2传参2 多参数
@app.route('/words/')
def words():
    word = {
        'name' : '巨浪网络软件工作室',
        'qq':'11351702'
    }
    return render_template('words.html',words = word)

# 如果我们想直接用name,qq直接接收变量，我们可以这样做：把字典当成关键字参数**wd
@app.route('/wd2/')
def wd2():
    wd = {
        'name': '巨浪网络软件工作室',
        'qq': '11351702'
    }
    return render_template('wd2.html',**wd)

# 如果参数的值也是字典
@app.route('/wd3/')
def wd3():
    wd = {
        'name': '巨浪网络软件工作室',
        'qq': '11351702',
        'age': {
            'xiaoming': '18',
            'xiaowei': '20'
        }
    }
    return render_template('wd3.html',**wd)


@app.route('/')
def hello_world():
    return redirect(url_for('index'))


# GET/POST请求
@app.route('/get_post/', methods=['get', 'post'])
def get_post():
    return '我可以用get/post'


# 重定向到get_post页面
# 因为没有输入id，所以会跳转到get_post页面
@app.route('/relgetpost/', methods=['get', 'post'])
def relgetpost():
    id = request.args.get('id')
    if not id:
        return redirect(url_for('get_post'))
    else:
        return format(id)


# Response视图函数  from werkzeug import Response
@app.route('/viewFun/')
def viewFun():
    resp = Response(response='我是response视图函数', status=200, content_type='text/html;charset=utf8')
    return resp


# 如果返回的是一个元组，元组中的数据类型是（response,status,headers）。status会覆盖默认的200状态码，headers可以是一个列表或者字典作为额外的消息头
@app.route('/about/')
def about():
    # return '我是about page', 200, {'server':'heboan'}
    wd = {'server': 'heboan'}
    return jsonify(wd)


# 加入之前的url等
# @app.route('/')
# def hello_world():
#
#     return '我是默认页'
#
# @app.route('/page')
# def page():
#     return '我是oage页'
#
# # url传参
# # /index/1/
# @app.route('/page/<id>')
# def pages(id):
#     return '输入的变量是：{}'.format(id)
#
# # /index/?id=1
# @app.route('/index/')
# def index():
#     id = request.args.get('id')
#     return '我输入的变量是：{}'.format(id)
#
# # url_for
# @app.route('/urlfor')
# def urlfor():
#     return url_for('hello_world')
#
# # /index/id/查找/page/id/的url
# @app.route('/urlfor2/<id>')
# def urlfor2(id):
#     return url_for('pages',id=format(id))
#
# # /urlfor3/?id=999查询到/page?id=999的url
# @app.route('/urlfor3/')
# def urlfor3():
#     id = request.args.get('id')
#     return url_for('page',id = format(id))
#
#
#
#
# class TelephoneConveter(BaseConverter):
#     regex = r'1[3458]\d{9}'
#
# # 这里是定义数据类性的名字，并注册到url_map中
# app.url_map.converters['tel'] = TelephoneConveter
#
# # 然后我们就可以使用自定一的tel类型了
# @app.route('/my_tel/<tel:telephone>')
# def my_tel(telephone):
#     return '您的手机号码是：{}'.format(telephone)
#
# # /index/a+b
# @app.route('/num/<bords>')
# def num(bords):
#     bords = bords.split('+')
#     return str(bords)

if __name__ == '__main__':
    app.run()
